class Solution {
public:
    long long maxSpending(vector<vector<int>>& values) {
        // 排序不等式(大配大，小配小)
        int m = values.size(), n = values[0].size();
        vector<int> t;
        for(int i = 0; i < m ; i++)
            for(int j = 0; j < n; j++)
                t.push_back(values[i][j]);
        sort(t.begin(), t.end());
        long long ret = 0;
        for(long long i = 0; i < m * n; i++)
            ret += t[i] * (i + 1);
        return ret;
    }
};